// commitlint.config.cjs
module.exports = {
	// 继承的规则
	extends: ["@commitlint/config-conventional"],
	// 自定义规则
	rules: {
		// @see https://commitlint.js.org/#/reference-rules
		// 提交类型枚举，git提交type必须是以下类型
		"type-enum": [
			2,
			"always",
			[
				"feat", // 新增功能
				"fix", // 修复缺陷
				"docs", // 文档变更
				"style", // 代码格式（不影响功能，例如空格、分号等格式修正）
				"refactor", // 代码重构（不包括 bug 修复、功能新增）
				"perf", // 性能优化
				"test", // 添加疏漏测试或已有测试改动
				"build", // 构建流程、外部依赖变更（如升级 npm 包、修改 webpack 配置等）
				"ci", // 修改 CI 配置、脚本
				"revert", // 回滚 commit
				"chore", // 对构建过程或辅助工具和库的更改（不影响源文件、测试用例）
			],
		],
		"subject-case": [0], // subject大小写不做校验
	},

	prompt: {
		messages: {
			type: "选择你要提交的类型 :",
			scope: "选择一个提交范围（可选）:",
			customScope: "请输入自定义的提交范围 :",
			subject: "填写简短精炼的变更描述 :\n",
			body: '填写更加详细的变更描述（可选）。使用 "|" 换行 :\n',
			breaking: '列举非兼容性重大的变更（可选）。使用 "|" 换行 :\n',
			footerPrefixesSelect: "选择关联issue前缀（可选）:",
			customFooterPrefix: "输入自定义issue前缀 :",
			footer: "列举关联issue (可选) 例如: #31, #I3244 :\n",
			generatingByAI: "正在通过 AI 生成你的提交简短描述...",
			generatedSelectByAI: "选择一个 AI 生成的简短描述:",
			confirmCommit: "是否提交或修改commit ?",
		},
		// prettier-ignore
		types: [
   { value: "feat", name: "特性:     ✨  新增功能", emoji: ":sparkles:" },
   { value: "fix", name: "修复:     🐛  修复缺陷", emoji: ":bug:" },
   { value: "docs", name: "文档:     📝  文档变更", emoji: ":memo:" },
   { value: "style", name: "格式:     🌈  代码格式（不影响功能，例如空格、分号等格式修正）", emoji: ":lipstick:" },
   { value: "refactor", name: "重构:     🔄  代码重构（不包括 bug 修复、功能新增）", emoji: ":recycle:" },
   { value: "perf", name: "性能:     🚀  性能优化", emoji: ":zap:" },
   { value: "test", name: "测试:     🧪  添加疏漏测试或已有测试改动", emoji: ":white_check_mark:" },
   { value: "build", name: "构建:     📦️  构建流程、外部依赖变更（如升级 npm 包、修改 vite 配置等）", emoji: ":package:" },
   { value: "ci", name: "集成:     ⚙️  修改 CI 配置、脚本", emoji: ":ferris_wheel:" },
   { value: "revert", name: "回退:     ↩️  回滚 commit", emoji: ":rewind:" },
   { value: "chore", name: "其他:     🛠️  对构建过程或辅助工具和库的更改（不影响源文件、测试用例）", emoji: ":hammer:" },
  ],
		useEmoji: true,
		emojiAlign: "center",
		useAI: false,
		aiNumber: 1,
		themeColorCode: "",
		scopes: [],
		allowCustomScopes: true,
		allowEmptyScopes: true,
		customScopesAlign: "bottom",
		customScopesAlias: "custom",
		emptyScopesAlias: "empty",
		upperCaseSubject: false,
		markBreakingChangeMode: false,
		allowBreakingChanges: ["feat", "fix"],
		breaklineNumber: 100,
		breaklineChar: "|",
		skipQuestions: [],
		issuePrefixes: [
			{ value: "closed", name: "closed:   ISSUES has been processed" },
		],
		customIssuePrefixAlign: "top",
		emptyIssuePrefixAlias: "skip",
		customIssuePrefixAlias: "custom",
		allowCustomIssuePrefix: true,
		allowEmptyIssuePrefix: true,
		confirmColorize: true,
		maxHeaderLength: Infinity,
		maxSubjectLength: Infinity,
		minSubjectLength: 0,
		scopeOverrides: undefined,
		defaultBody: "",
		defaultIssues: "",
		defaultScope: "",
		defaultSubject: "",
	},
};
